# 使用官方 Node.js 22 LTS 版本作为基础镜像
FROM node:22-bullseye-slim AS base

# 设置工作目录
WORKDIR /app

# 配置 npm 使用国内镜像源
RUN npm config set registry https://registry.npmmirror.com
#RUN npm config set registry https://registry.npm.taobao.org

# 复制 package.json 和 package-lock.json
COPY package*.json ./

# 更新 npm 到指定版本
#RUN npm install -g npm@11.2.0  # 将此处的版本替换为你想要的版本



# 安装依赖
RUN npm install

# 复制项目文件
COPY . .

# 构建阶段
FROM base AS build
RUN npm run build

# 部署阶段
FROM nginx:alpine AS production

# 移除默认 Nginx 配置
RUN rm /etc/nginx/conf.d/default.conf

# 复制自定义 Nginx 配置
COPY nginx.conf /etc/nginx/conf.d

# 复制主 Nginx 配置文件  这里主要是因为跨域http命令在conf.d/nginx.conf下不受用，所以又加了一个nginx_http.conf文件单独用来配置/etc/nginx/nginx.conf文件
COPY nginx_http.conf /etc/nginx/nginx.conf


# 复制构建文件到 Nginx 静态资源目录
COPY --from=build /app/dist /usr/share/nginx/html

# 暴露服务端口（例如 5173）
EXPOSE 5173

# 启动 Nginx
CMD ["nginx", "-g", "daemon off;"]

# docker build -t vue-app .
# docker run -p 5173:5173 vue-app
